]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
grabHelper: Use captured-event for escape ungrabs
authorJasper St. Pierre <jstpierre@mecheye.net>
Mon, 26 Nov 2012 19:47:30 +0000 (14:47 -0500)
committerJasper St. Pierre <jstpierre@mecheye.net>
Sat, 8 Dec 2012 00:53:46 +0000 (19:53 -0500)
I have no idea why we used 'event' rather than 'captured-event' before.
'event' has some really strange quirks that came up when porting PopupMenu
to the GrabHelper

https://bugzilla.gnome.org/show_bug.cgi?id=689109

js/ui/grabHelper.js

index f6b11ccdd3b576f5d3568e957b66ea3850bc9241..4104c8d5657f9aeda108c03e8254e2c0d2dbd823 100644 (file)
@@ -43,7 +43,6 @@ const GrabHelper = new Lang.Class({
 
         this._actors = [];
         this._capturedEventId = 0;
-        this._eventId = 0;
         this._keyFocusNotifyId = 0;
         this._focusWindowChangedId = 0;
         this._ignoreRelease = false;
@@ -171,7 +170,6 @@ const GrabHelper = new Lang.Class({
                 return false;
 
             this._capturedEventId = global.stage.connect('captured-event', Lang.bind(this, this._onCapturedEvent));
-            this._eventId = global.stage.connect('event', Lang.bind(this, this._onEvent));
         }
 
         this._modalCount++;
@@ -188,11 +186,6 @@ const GrabHelper = new Lang.Class({
             this._capturedEventId = 0;
         }
 
-        if (this._eventId > 0) {
-            global.stage.disconnect(this._eventId);
-            this._eventId = 0;
-        }
-
         Main.popModal(this._owner);
         global.sync_pointer();
     },
@@ -310,6 +303,12 @@ const GrabHelper = new Lang.Class({
         if (!button && this._modalCount == 0)
             return false;
 
+        if (type == Clutter.EventType.KEY_PRESS &&
+            event.get_key_symbol() == Clutter.KEY_Escape) {
+            this.ungrab();
+            return true;
+        }
+
         if (this._isWithinGrabbedActor(event.get_source()))
             return false;
 
@@ -327,18 +326,6 @@ const GrabHelper = new Lang.Class({
         return this._modalCount > 0;
     },
 
-    // We catch 'event' rather than 'key-press-event' so that we get
-    // a chance to run before the overview's own Escape check
-    _onEvent: function(actor, event) {
-        if (event.type() == Clutter.EventType.KEY_PRESS &&
-            event.get_key_symbol() == Clutter.KEY_Escape) {
-            this.ungrab();
-            return true;
-        }
-
-        return false;
-    },
-
     _onKeyFocusChanged: function() {
         let focus = global.stage.key_focus;
         if (!focus || !this._isWithinGrabbedActor(focus))